package com.situ.springboot.config;

// @Component    <bean>
// @Controller  @Service @Repository
// 这四个注解的作用是一样的，下面三个不一样主要是为了区分不同层

import com.situ.springboot.interceptor.LoginInterceptor;
import com.situ.springboot.pojo.Admin;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

// @Configuration用于定义配置类，可以替换xml配置文件，<bean>
// 加了这个注解的类的内部包含一个或多个被@Bean注解的方法
//@Configuration
public class WebConfig implements WebMvcConfigurer {

    /* <bean name="admin" class="com.situ.springboot.pojo.Admin"/>*/
    @Bean
    public Admin createAdmin() {
        return new Admin();
    }

    /*<!-- 配置拦截器 -->
   <mvc:interceptors>
      <mvc:interceptor>
         <mvc:mapping path="/**"/>
         <mvc:exclude-mapping path=""/>
         <bean class="com.situ.mvc.interceptor.MyInterceptor1"></bean>
      </mvc:interceptor>
   </mvc:interceptors>*/
    // 这个方法用来注册拦截器，我们写的拦截器需要在这里配置才能生效

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //把登录的拦截器配置上才能起作用
        // addPathPatterns("/**") 拦截器拦截所有的请求，静态资源也拦截了，需要放行
        // excludePathPatterns 代表哪些请求不需要拦截
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/auth/code", "/admin/toLogin", "/admin/login", "/admin/logout", "/admin/toFail", "/static/**");
    }
}
